\section{Utilities}
\label{sec:util}

We have some utitlities available for input and output of
sparse matrices; the interfaces to these routines are available in the
module \verb|psb_util_mod|.



%\subroutine{PSB\_HBIO\_MOD}{Input/Output in Harwell-Boeing format}

\clearpage\subsection*{ hb\_read --- Read a sparse matrix from a file in the
  Harwell--Boeing format}
\addcontentsline{toc}{subsection}{hb\_read}


\begin{lstlisting}
call hb_read(a, iret, iunit, filename, b, mtitle)
\end{lstlisting}

\begin{description}
\item[Type:] Asynchronous.
\item[\bf  On Entry ]
\item[filename] The name of the file to be read.\\
Type:{\bf optional}.\\
Specified as: a character variable containing a valid file name, or
\verb|-|, in which case the default input unit  5 (i.e. standard input
in Unix jargon) is used. Default: \verb|-|. 
\item[iunit] The Fortran file unit number.\\
Type:{\bf optional}.\\
Specified as: an integer value. Only meaningful if filename is not \verb|-|.
\end{description}

\begin{description}
\item[\bf On Return]
\item[a] the sparse matrix read from file.\\
Type:{\bf required}.\\
Specified as: a structured data of type \spdata.
\item[b] Rigth hand side(s).\\
Type: {\bf Optional} \\
An  array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state. 
\item[mtitle] Matrix title.\\
Type: {\bf Optional} \\
A charachter variable of length 72 holding a copy of the
matrix title as specified by the Harwell-Boeing format and contained
in the input file.
\item[iret] Error code.\\
Type: {\bf required} \\
An integer value; 0 means no error has been detected. 
\end{description}



\clearpage\subsection*{hb\_write --- Write a sparse matrix to a  file
  in the Harwell--Boeing format}
\addcontentsline{toc}{subsection}{hb\_write}


\begin{lstlisting}
call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
\end{lstlisting}



\begin{description}
\item[Type:] Asynchronous.
\item[\bf  On Entry ]
\item[a] the sparse matrix to be written.\\
Type:{\bf required}.\\
Specified as: a structured data of type \spdata.
\item[b] Rigth hand side.\\
Type: {\bf Optional} \\
An  array of type real or complex, rank 1 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side. 
\item[filename] The name of the file to be written to.\\
Type:{\bf optional}.\\
Specified as: a character variable containing a valid file name, or
\verb|-|, in which case the default output unit  6 (i.e. standard output
in Unix jargon) is used. Default: \verb|-|. 
\item[iunit] The Fortran file unit number.\\
Type:{\bf optional}.\\
Specified as: an integer value. Only meaningful if filename is not \verb|-|.
\item[key] Matrix key.\\
Type: {\bf Optional} \\
A charachter variable of length 8 holding the
matrix key as specified by the Harwell-Boeing format and to be
written to file.
\item[mtitle] Matrix title.\\
Type: {\bf Optional} \\
A charachter variable of length 72 holding the
matrix title as specified by the Harwell-Boeing format and to be
written to file.
\end{description}

\begin{description}
\item[\bf On Return]
\item[iret] Error code.\\
Type: {\bf required} \\
An integer value; 0 means no error has been detected. 
\end{description}




%\subroutine{PSB\_MMIO\_MOD}{Input/Output in MatrixMarket format}

\clearpage\subsection*{mm\_mat\_read --- Read a sparse matrix from a
  file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_mat\_read}

\begin{lstlisting}
call mm_mat_read(a, iret, iunit, filename)
\end{lstlisting}

\begin{description}
\item[Type:] Asynchronous.
\item[\bf  On Entry ]
\item[filename] The name of the file to be read.\\
Type:{\bf optional}.\\
Specified as: a character variable containing a valid file name, or
\verb|-|, in which case the default input unit  5 (i.e. standard input
in Unix jargon) is used. Default: \verb|-|. 
\item[iunit] The Fortran file unit number.\\
Type:{\bf optional}.\\
Specified as: an integer value. Only meaningful if filename is not \verb|-|.
\end{description}

\begin{description}
\item[\bf On Return]
\item[a] the sparse matrix read from file.\\
Type:{\bf required}.\\
Specified as: a structured data of type \spdata.
\item[iret] Error code.\\
Type: {\bf required} \\
An integer value; 0 means no error has been detected. 
\end{description}


\clearpage\subsection*{mm\_array\_read --- Read a dense array from a
  file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_array\_read}

\begin{lstlisting}
call mm_array_read(b, iret, iunit, filename)
\end{lstlisting}

\begin{description}
\item[Type:] Asynchronous.
\item[\bf  On Entry ]
\item[filename] The name of the file to be read.\\
Type:{\bf optional}.\\
Specified as: a character variable containing a valid file name, or
\verb|-|, in which case the default input unit  5 (i.e. standard input
in Unix jargon) is used. Default: \verb|-|. 
\item[iunit] The Fortran file unit number.\\
Type:{\bf optional}.\\
Specified as: an integer value. Only meaningful if filename is not \verb|-|.
\end{description}

\begin{description}
\item[\bf On Return]
\item[b] Rigth hand side(s).\\
Type: {\bf required} \\
An  array of type real or complex, rank 1 or 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state. 
\item[iret] Error code.\\
Type: {\bf required} \\
An integer value; 0 means no error has been detected. 
\end{description}



\clearpage\subsection*{mm\_mat\_write --- Write a sparse matrix to a
  file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_mat\_write}


\begin{lstlisting}
call mm_mat_write(a, mtitle, iret, iunit, filename)
\end{lstlisting}
\begin{description}
\item[Type:] Asynchronous.
\item[\bf  On Entry ]
\item[a] the sparse matrix to be written.\\
Type:{\bf required}.\\
Specified as: a structured data of type \spdata.
\item[mtitle] Matrix title.\\
Type: {\bf required} \\
A charachter variable holding a descriptive title for the matrix to be
 written to file.
\item[filename] The name of the file to be written to.\\
Type:{\bf optional}.\\
Specified as: a character variable containing a valid file name, or
\verb|-|, in which case the default output unit  6 (i.e. standard output
in Unix jargon) is used. Default: \verb|-|. 
\item[iunit] The Fortran file unit number.\\
Type:{\bf optional}.\\
Specified as: an integer value. Only meaningful if filename is not \verb|-|.
\end{description}

\begin{description}
\item[\bf On Return]
\item[iret] Error code.\\
Type: {\bf required} \\
An integer value; 0 means no error has been detected. 
\end{description}


\clearpage\subsection*{mm\_array\_write ---  Write a dense array from a
  file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_array\_write}

\begin{lstlisting}
call mm_array_write(b, iret, iunit, filename)
\end{lstlisting}

\begin{description}
\item[Type:] Asynchronous.
\item[\bf  On Entry ]
\item[b] Rigth hand side(s).\\
Type: {\bf required} \\
An  array of type real or complex, rank 1 or 2; will be written..\
\item[filename] The name of the file to be written.\\
Type:{\bf optional}.\\
Specified as: a character variable containing a valid file name, or
\verb|-|, in which case the default input unit  5 (i.e. standard input
in Unix jargon) is used. Default: \verb|-|. 
\item[iunit] The Fortran file unit number.\\
Type:{\bf optional}.\\
Specified as: an integer value. Only meaningful if filename is not \verb|-|.
\end{description}

\begin{description}
\item[\bf On Return]
\item[iret] Error code.\\
Type: {\bf required} \\
An integer value; 0 means no error has been detected. 
\end{description}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "userguide"
%%% End: 
